package util;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Map;


public class Util {
		public static final String DEF_CHATSET = "UTF-8";
	    public static final int DEF_CONN_TIMEOUT = 30000;
	    public static final int DEF_READ_TIMEOUT = 30000;
	    public static String userAgent =  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";
	    
	    
	    //配置您申请的KEY
	    public static final String APPKEY ="*************************";
	    
	    
	    /**向指定的地址发送Post请求
	     * @param url
	     * @param data
	     * @return
	     */
	    public static String post(String url,String data){
	    	try {
				URL urlObj = new URL(url);
				URLConnection connection = urlObj.openConnection();
				//要发送数据出去，必须要设置为可发送数据状态
				connection.setDoOutput(true);
				//获取输出流
				OutputStream os = connection.getOutputStream();
				//写出数据
				os.write(data.getBytes());
				os.close();
				//获取输入流
				InputStream is = connection.getInputStream();
				byte[] b = new byte[1024];
				int len;
				StringBuffer sb = new StringBuffer();
				while((len=is.read(b))!=-1){
					sb.append(new String(b,0,len));
				}
				return sb.toString();
			} catch (Exception e) {
				e.printStackTrace();
			}
	    	return null;
	    }
	    
	    /**向指定的地址发送Get请求
	     * @param url
	     * @return
	     */
	    public static String  get(String url) {
	    	try {
	    		URL urlObj = new URL(url);
	    		//开连接
				URLConnection connection = urlObj.openConnection();
				InputStream is = connection.getInputStream();
				byte[] b = new byte[1024];
				int len;
				StringBuffer sb = new StringBuffer();
				while((len=is.read(b))!=-1){
					sb.append(new String(b,0,len));
				}
				return sb.toString();
			} catch (Exception e) {
				
				e.printStackTrace();
			}
			return null;
		}
	    /*
	     * @param strUrl 请求地址
	     * @param params 请求参数
	     * @param method 请求方法
	     * @return  网络请求字符串
	     * @throws Exception
	     */
	    public static String net(String strUrl, Map params,String method) throws Exception {
	        HttpURLConnection conn = null;
	        BufferedReader reader = null;
	        String rs = null;
	        try {
	            StringBuffer sb = new StringBuffer();
	            if(method==null || method.equals("GET")){
	                strUrl = strUrl+"?"+urlencode(params);
	            }
	            URL url = new URL(strUrl);
	            conn = (HttpURLConnection) url.openConnection();
	            if(method==null || method.equals("GET")){
	                conn.setRequestMethod("GET");
	            }else{
	                conn.setRequestMethod("POST");
	                conn.setDoOutput(true);
	            }
	            conn.setRequestProperty("User-agent", userAgent);
	            conn.setUseCaches(false);
	            conn.setConnectTimeout(DEF_CONN_TIMEOUT);
	            conn.setReadTimeout(DEF_READ_TIMEOUT);
	            conn.setInstanceFollowRedirects(false);
	            conn.connect();
	            if (params!= null && method.equals("POST")) {
	                try {
	                    DataOutputStream out = new DataOutputStream(conn.getOutputStream());
	                        out.writeBytes(urlencode(params));
	                } catch (Exception e) {
	                    // TODO: handle exception
	                }
	            }
	            InputStream is = conn.getInputStream();
	            reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));
	            String strRead = null;
	            while ((strRead = reader.readLine()) != null) {
	                sb.append(strRead);
	            }
	            rs = sb.toString();
	        } catch (IOException e) {
	            e.printStackTrace();
	        } finally {
	            if (reader != null) {
	                reader.close();
	            }
	            if (conn != null) {
	                conn.disconnect();
	            }
	        }
	        return rs;
	    }
	 
	    //将map型转为请求参数型
	    public static String urlencode(Map<String,Object>data) {
	        StringBuilder sb = new StringBuilder();
	        for (Map.Entry i : data.entrySet()) {
	            try {
	                sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");
	            } catch (UnsupportedEncodingException e) {
	                e.printStackTrace();
	            }
	        }
	        return sb.toString();
	    }
}
